From: Marina Zhurakhinskaya Date: Fri, 11 Sep 2009 22:59:31 +0000 (-0400) Subject: Don't show section headers for sections with no results and don't show page X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10929 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=02c65fab8dc94a3be1845956ed215b82d6aae119;p=gnome-shell.git Don't show section headers for sections with no results and don't show page controls if there is only one page of results This makes the search results display more streamlined. Make sure that we move the selection to a different section if we are going from displaying a single section to displaying all and the section that used to be displayed alone doesn't have any results. --- diff --git a/js/ui/dash.js b/js/ui/dash.js index 41feb7203..5e14c5355 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -641,10 +641,27 @@ Dash.prototype = { for (var i = 0; i < this._searchSections.length; i++) { let section = this._searchSections[i]; section.resultArea.display.setSearch(text); - let itemCount = section.resultArea.display.getMatchedItemsCount() + ""; - section.header.countText.text = itemCount; - if (this._searchResultsSingleShownSection == section.type) - this._searchResultsSection.header.setCountText(itemCount); + let itemCount = section.resultArea.display.getMatchedItemsCount(); + let itemCountText = itemCount + ""; + section.header.countText.text = itemCountText; + + if (this._searchResultsSingleShownSection == section.type) { + this._searchResultsSection.header.setCountText(itemCountText); + if (itemCount == 0) { + section.resultArea.actor.hide(); + } else { + section.resultArea.actor.show(); + } + } else if (this._searchResultsSingleShownSection == null) { + // Don't show the section if it has no results + if (itemCount == 0) { + section.header.actor.hide(); + section.resultArea.actor.hide(); + } else { + section.header.actor.show(); + section.resultArea.actor.show(); + } + } // Refresh the selection when a new search is applied. section.resultArea.display.unsetSelected(); @@ -880,11 +897,12 @@ Dash.prototype = { // This will be the only section shown. section.resultArea.display.selectFirstItem(); section.resultArea.controlBox.show(); - let itemCount = section.resultArea.display.getMatchedItemsCount() + ""; + let itemCount = section.resultArea.display.getMatchedItemsCount(); + let itemCountText = itemCount + ""; section.header.actor.hide(); this._searchResultsSection.header.setTitle(section.title); this._searchResultsSection.header.setBackLinkVisible(true); - this._searchResultsSection.header.setCountText(itemCount); + this._searchResultsSection.header.setCountText(itemCountText); } else { // We need to hide this section. section.header.actor.hide(); @@ -897,20 +915,35 @@ Dash.prototype = { _showAllSearchSections: function() { if (this._searchResultsSingleShownSection != null) { + let selectionSet = false; for (var i = 0; i < this._searchSections.length; i++) { let section = this._searchSections[i]; if (section.type == this._searchResultsSingleShownSection) { // This will no longer be the only section shown. section.resultArea.display.displayPage(0); section.resultArea.controlBox.hide(); - section.header.actor.show(); + let itemCount = section.resultArea.display.getMatchedItemsCount(); + if (itemCount != 0) { + section.header.actor.show(); + section.resultArea.display.selectFirstItem(); + selectionSet = true; + } this._searchResultsSection.header.setTitle(_("SEARCH RESULTS")); this._searchResultsSection.header.setBackLinkVisible(false); this._searchResultsSection.header.setCountText(""); } else { // We need to restore this section. - section.header.actor.show(); - section.resultArea.actor.show(); + let itemCount = section.resultArea.display.getMatchedItemsCount(); + if (itemCount != 0) { + section.header.actor.show(); + section.resultArea.actor.show(); + // This ensures that some other section will have the selection if the + // single section that was being displayed did not have any items. + if (!selectionSet) { + section.resultArea.display.selectFirstItem(); + selectionSet = true; + } + } } } this._searchResultsSingleShownSection = null; diff --git a/js/ui/genericDisplay.js b/js/ui/genericDisplay.js index 219bf0eb5..f8dfc5619 100644 --- a/js/ui/genericDisplay.js +++ b/js/ui/genericDisplay.js @@ -707,6 +707,9 @@ GenericDisplay.prototype = { if (resetDisplayControl) { this.displayControl.remove_all(); let nPages = this._list.n_pages; + // Don't show the page indicator if there is only one page. + if (nPages == 1) + return; let pageNumber = this._list.page; for (let i = 0; i < nPages; i++) { let pageControl = new Link.Link({ color: (i == pageNumber) ? DISPLAY_CONTROL_SELECTED_COLOR : ITEM_DISPLAY_DESCRIPTION_COLOR,